Syntax.Comments

Each comment must start with # (space hash). Everything following in that line is comment and will be removed from output If your pattern uses #, escape it like \#

Syntax.Functions

::functionName(arg1 ;; arg2 ;; arg3) ## Comments if you want
  • The function must be the only thing on the line. Comments allowed.
  • Args must not be quoted. Every arg will be trimmed (surrounding whitespace is removed).
  • Args are separated by ' ;; ' (space semicolon semicolon space)

Syntax.Refs

Functions can accept a refs list as an argument. Each ref is closed in double moustaches {{refname}}

## Combine selected refs with the bar (|) separator
::combine( {{ref1}}{{ref2}}{{ref3}} ;; |)

Each ref name can be composed of a-z, A-Z, 0-9, and/or special chars: . - _

Example.Cleaning.Src

<<<REGEX One #a comment at the start

Another start of line comment

#\
\ eol_esc_slash\\\\\\ eol_space_test\\\\\
abc\ #Should this be a comment? It IS, only because making it NOT a comment is much more complicated & harder to communicate. def\ #this IS a comment ghi\ #this is not a comment jkl\\ #this IS a comment # \ Two # Am a comment ( ( # Am another comment #Three # This seems like a lot of comments #[0-9] # You need escape your # lie # to use a space + hash as not-a-comment ))? REGEX,

Example.Cleaning.Target

'One\#\ \ \ eol_esc_slash\\\\\\eol_space_test\\\\\ abc\ def\ ghi\ \#this is not a commentjkl\\\ Two( (#Three))?',

Example.Full

$reg = <<<REGEX /abc\ # abc then a space ( # join referenced regexes with a | ::combine({{one}}{{two}}{{three}} ;; | ) )\ # literal backslash

    \# # literal hashtag (then comment)
xyz/

REGEX; $reg_refs = [ 'one'=>'(1|one|uno)', 'two'=>'(2|two|dos)', 'three'=>'(3|three|tres)', 'four'=>'(4|four|quatro)' ]; $br = new \Breg(); $br->handle('combine', function(array $keys, string $joiner) use ($reg_refs){ // make an array of only the selected regs $regs = []; foreach ($keys as $k){ $regs[] = $reg_refs[$k]; } return implode($joiner, $regs); } ); $final = $br->parse($reg);

$this->compare( '/abc\ ((1|one|uno)|(2|two|dos)|(3|three|tres))\\#xyz/', $final, ); $this->is_true( preg_match($final, 'abc dos\#xyz/') === 1 );